﻿using Newtonsoft.Json;

namespace Fadada.FASC.SDK.DotNetCore.Model
{
    public class RespCorpGetIdentityInfo
    {
        /// <summary>
        /// 用户在应用系统中的唯一标识。企业的openCorpId
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "openCorpId", Required = Required.Always)]
        public string OpenCorpId { get; set; }

        /// <summary>
        ///实名认证状态：unidentified: 未认证(如果尚未授权绑定帐号，则当做未认证)identified: 已认证且有效ident_invalid：认证失效(注意检查认证中心中的状态，认证可能失效/如过期)该参数非常重要，因为只有有效实名认证的用户方可使用法大大电子签服务。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "corpIdentStatus", Required = Required.Always)]
        public string CorpIdentStatus { get; set; }

        /// <summary>
        /// 企业身份信息。只有corpIdentStatus=identified时，才返回该参数和以下参数。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "corpIdentInfo", Required = Required.AllowNull)]
        public CorpIdentInfo CorpIdentInfo { get; set; }

        /// <summary>
        /// 企业补充信息。只有corpIdentStatus=identified时，才返回该参数和以下参数。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "corpIdentInfoExtend", Required = Required.AllowNull)]
        public CorpInfoExtend CorpIdentInfoExtend { get; set; }

        /// <summary>
        /// 企业实名认证时所选择的认证方案：
        /// legal_rep: 法定代表人身份认证 (企业经办人为法定代表人时，可选法定代表人身份认证)
        /// deputy_auth: 法定代表人授权认证 (企业经办人为代理人时，可选法定代表人授权认证)
        /// payment: 企业对公账户认证 (使用企业在银行开立的对公账户验证并通过打款验证其关系)
        /// offline: 纸质材料审核认证 (企业线上提供资料提交进行预审，并在线下提供材料进行审核，周期较长)。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "corpIdentMethod", Required = Required.Always)]
        public string CorpIdentMethod { get; set; }

        /// <summary>
        /// 企业认证经办人身份类型：
        /// legal_rep: 企业法定代表人
        /// deputy_auth: 企业普通代理人
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "operatorType", Required = Required.Always)]
        public string OperatorType { get; set; }

        /// <summary>
        /// 企业经办人的openUserId。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "operatorId", Required = Required.Always)]
        public string OperatorId { get; set; }

        /// <summary>
        /// 企业经办人实名认证时所选择的认证方案：
        /// mobile: 实名手机号认证 (该方案校验的是企业经办人在电信运营商绑定的真实姓名、身份证号码、手机号及对应的短信验证码)
        /// face: 人脸识别认证 (该方案校验的是企业经办人的真实姓名、身份证号码和人脸比对)
        /// bank: 个人银行卡认证 (该方案校验的是企业经办人在银行绑定的真实姓名、身份证号码、银行卡卡号、预留在银行的手机号及对应的短信验证码)
        /// offline: 人工审核认证 (该方案主要为特殊人群提供的人工审核通道，如部分企业经办人因为特殊原因，无法在其他方案下完成认证。例如：手机不可用、人脸比对不成功、外国人等)。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "operatorIdentMethod", Required = Required.Always)]
        public string OperatorIdentMethod { get; set; }

        /// <summary>
        /// 认证提交时间。格式为：Unix标准时间戳，精确到毫秒。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "identSubmitTime", Required = Required.AllowNull)]
        public string IdentSubmitTime { get; set; }

        /// <summary>
        /// 认证通过时间。以了解最后一次认证通过的时间 (有的业务要求用户在一定周期内重新认证)。格式为：Unix标准时间戳，精确到毫秒。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "identSuccessTime", Required = Required.AllowNull)]
        public string IdentSuccessTime { get; set; }
    }
}